home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 30 / Amiga Format AFCD30 (Sep 1998, Issue 114).iso / -seriously_amiga- / sound / euterpe / developer / bnkdemo.h < prev    next >
C/C++ Source or Header  |  1998-06-18  |  6KB  |  238 lines

  1. // bnkdemo.h
  2. // $Id$
  3.  
  4. #include <exec/types.h>
  5. #include <exec/memory.h>
  6. #include <exec/semaphores.h>
  7. #include <intuition/gadgetclass.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11.  
  12. #include <proto/exec.h>
  13. #include <proto/dos.h>
  14. #include <proto/graphics.h>
  15. #include <proto/intuition.h>
  16. #include <proto/gadtools.h>
  17. #include <proto/asl.h>
  18. #include <clib/macros.h>
  19.  
  20. #include "/xappmsg.h"
  21. #include "mydebug.h"
  22.  
  23.  
  24. enum GadgetID {
  25.     UPLOAD_ID,
  26.     DOWNLOAD_ID,
  27.     LOAD_ID,
  28.     SAVE_ID,
  29.     SETPART_ID,
  30.     SETPRG_ID,
  31.     UNIT_ID,
  32.     PROGRAM_ID,
  33.     PART_ID,
  34.     TONE_ID,
  35.     TONENAME_ID,
  36.     SPARTIAL1_ID,
  37.     SPARTIAL2_ID,
  38.     ENVMODE_ID,
  39.     PARTIALMUTE_ID,
  40.     PARTIAL_ID,
  41.     PARAMETER_ID,
  42.     VALUE_ID,
  43.     MAX_ID
  44. };
  45.  
  46. struct FXNode*      n ;
  47. struct List*        l ;
  48. struct Window*      xappwin ;
  49. struct Gadget*      glist ;
  50. struct Gadget*      gad ;
  51. APTR                vi ;
  52. struct Screen       *ps ;
  53. BOOL                winopen ;
  54.  
  55. struct MsgPort*    MyPort ;
  56. struct MsgPort*    XAppPort ;
  57. struct MsgPort*    replyPort ;
  58.  
  59. char                MyPortName[XAPPNAMELENGTH] ;
  60. APTR                xHandle ;
  61.  
  62.  
  63. struct TagItem __aligned ti[] = {
  64.     {XAPP_Name,     (ULONG)"BNK-DEMO"},
  65.     {XAPP_PortName, (ULONG)MyPortName},
  66.     {XAPP_Type,     (ULONG)XAPPTYP_BANKEDITOR},
  67.     {TAG_DONE}
  68. };
  69.  
  70. struct TagItem __aligned th[] = {
  71.     {XAPP_Handle,   NULL},
  72.     {TAG_DONE}
  73. };
  74.  
  75. struct TagItem __aligned td[] = {
  76.     {XAPP_Handle,           NULL},
  77.     {BANK_MidiBuffer,       NULL},
  78.     {BANK_MidiLength,       0},
  79.     {TAG_DONE}
  80. };
  81.  
  82. struct TagItem __aligned rd[] = {
  83.     {XAPP_Handle,           NULL},
  84.     {BANK_MidiBuffer,       NULL},
  85.     {BANK_MidiLength,       0},
  86.     {TAG_DONE}
  87. };
  88.  
  89.  
  90.  
  91.  
  92. struct Partial {
  93.     UBYTE pa_Value[58] ;
  94. };
  95.  
  96. struct Tone {
  97.     char   to_Name[10] ;
  98.     UBYTE  to_P12 ;
  99.     UBYTE  to_P34 ;
  100.     UBYTE  to_PMute ;
  101.     UBYTE  to_EnvMode ;
  102.     UBYTE  to_Partial[4][58] ;
  103. };
  104.  
  105. struct bnkDemoData {
  106.     struct SignalSemaphore *bd_Semaphore ;
  107.     WORD                    bd_UnitNumber ;
  108.     WORD                    bd_ToneNumber ;
  109.     WORD                    bd_ProgramNumber ;
  110.     WORD                    bd_PartNumber ;
  111.     WORD                    bd_PartialNumber ;
  112.     WORD                    bd_ParamNumber ;
  113.     struct Tone             bd_Tone[64] ;
  114. } bData ;
  115.  
  116. char partial[58][22] = {
  117.      "WG PITCH COARSE      ",
  118.      "WG PITCH FINE        ",
  119.      "WG PITCH KEYFOLLOW   ",
  120.      "WG PITCH BENDER SW   ",
  121.      "WG WAVEFORM/PCM BANK ",
  122.      "WG PCM WAVE          ",
  123.      "WG PULSE WIDTH       ",
  124.      "WG PW VELO SENS      ",
  125.      "P-ENV DEPTH          ",
  126.      "P-ENV VELO SENS      ",
  127.      "P-ENV TIME KEYF      ",
  128.      "P-ENV TIME 1         ",
  129.      "P-ENV TIME 2         ",
  130.      "P-ENV TIME 3         ",
  131.      "P-ENV TIME 4         ",
  132.      "P-ENV LEVEL 0        ",
  133.      "P-ENV LEVEL 1        ",
  134.      "P-ENV LEVEL 2        ",
  135.      "P-ENV SUSTAIN LEVEL  ",
  136.      "END LEVEL            ",
  137.      "P-LFO RATE           ",
  138.      "P-LFO DEPTH          ",
  139.      "P-LFO MOD SENS       ",
  140.      "TVF CUTOFF FREQ      ",
  141.      "TVF RESONANCE        ",
  142.      "TVF KEYFOLLOW        ",
  143.      "TVF BIAS POINT/DIR   ",
  144.      "TVF BIAS LEVEL       ",
  145.      "TVF ENV DEPTH        ",
  146.      "TVF ENV VELO SENS    ",
  147.      "TVF ENV DEPTH KEYF   ",
  148.      "TVF ENV TIME KEYF    ",
  149.      "TVF ENV TIME 1       ",
  150.      "TVF ENV TIME 2       ",
  151.      "TVF ENV TIME 3       ",
  152.      "TVF ENV TIME 4       ",
  153.      "TVF ENV TIME 5       ",
  154.      "TVF ENV LEVEL 1      ",
  155.      "TVF ENV LEVEL 2      ",
  156.      "TVF ENV LEVEL 3      ",
  157.      "TVF ENV SUSTAIN LEVEL",
  158.      "TVA LEVEL            ",
  159.      "TVA VELO SENS        ",
  160.      "TVA BIAS POINT 1     ",
  161.      "TVA BIAS LEVEL 1     ",
  162.      "TVA BIAS POINT 2     ",
  163.      "TVA BIAS LEVEL 2     ",
  164.      "TVA ENV TIME KEYF    ",
  165.      "TVA ENV TIME V_FOLLOW",
  166.      "TVA ENV TIME 1       ",
  167.      "TVA ENV TIME 2       ",
  168.      "TVA ENV TIME 3       ",
  169.      "TVA ENV TIME 4       ",
  170.      "TVA ENV TIME 5       ",
  171.      "TVA ENV LEVEL 1      ",
  172.      "TVA ENV LEVEL 2      ",
  173.      "TVA ENV LEVEL 3      ",
  174.      "TVA ENV SUSTAIN LEVEL"
  175. };
  176.  
  177.  
  178. WORD minpartial[58] = {
  179.     0, 0, 0, 0, 0, 0, 0, 0,                 // 8
  180.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     // 12
  181.     0, 0, 0,                                // 3
  182.     0, 0, 0, 0, 0,                          // 5
  183.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  // 13
  184.     0, 0, 0, 0, 0, 0,                       // 6
  185.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0         // 11
  186. };
  187.  
  188. WORD maxpartial[58] = {
  189.     96, 100, 16, 1, 3, 127, 100, 14,                                // 8
  190.     10, 100, 4, 100, 100, 100, 100, 100, 100, 100, 0, 100,          // 12
  191.     100, 100, 100,                                                  // 3
  192.     100, 30, 14, 127, 14,                                           // 5
  193.     100, 100, 4, 4, 100, 100, 100, 100, 100, 100, 100, 100, 100,    // 13
  194.     100, 100, 127, 12, 127, 12,                                     // 6
  195.     4, 4, 100, 100, 100, 100, 100, 100, 100, 100, 100               // 11
  196. };
  197.  
  198. static char     filename[80] ;
  199. static char     fname[80]  = "Untitled.bank" ;
  200. static char     pname[80] = "Euterpe:Banks/Roland/MT32" ;
  201. static char     tonename[11] ;
  202. static UBYTE    midibuffer[512] ;
  203.  
  204.  
  205. struct SignalSemaphore *MySemaphore ;
  206.  
  207. struct Gadget* tabgad[MAX_ID] ;
  208.  
  209. static ULONG winsig, msig, signal ;
  210. BOOL fin  ;
  211. #define HIGHPRI 21
  212.  
  213. struct XAppMsg  *xmsg, *replymsg, *emsg ;
  214.  
  215. extern __stdargs ULONG HookEntry() ;
  216.  
  217. VOID main(VOID) ;
  218. BOOL InitAll(void) ;
  219. BOOL CloseAll(WORD level) ;
  220. void ProcessEvents(void) ;
  221. BOOL InitWin(void) ;
  222. BOOL CloseWin(WORD level) ;
  223. void ProcessWinEvents(void) ;
  224. VOID StripWindow(struct Window *win) ;
  225. VOID StripIntuiMessages( struct MsgPort *mp, struct Window *win ) ;
  226. VOID StripMessages( struct MsgPort *mp ) ;
  227.  
  228. void UploadTone(void) ;
  229. void DownLoadTone(void) ;
  230. void LoadTone(void) ;
  231. void SaveTone(void) ;
  232. void SetPart(void) ;
  233. void SetPrg(void) ;
  234. struct FileRequester *InitAslFileReq(struct Screen *s, STRPTR drawer, const char *title) ;
  235. BOOL getfile(struct Screen *s, STRPTR name, STRPTR drawer, STRPTR pat, const char *title, BOOL savemode) ;
  236. void PatchName(void) ;
  237. void GetProgramList(void) ;
  238.